﻿#define _CRT_SECURE_NO_WARNINGS 1


////描述
////编写一个函数，计算字符串中含有的不同字符的个数。字符在 ASCII 码范围内(0~127 ，包括 0 和 127)，
////换行表示结束符，不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次
////例如，对于字符串 abaca 而言，有 a、b、c 三种不同的字符，因此输出 3 。
////
////数据范围： 1 \le n \le 500 \1≤n≤500
////输入描述：
////输入一行没有空格的字符串。
////
////输出描述：
////输出 输入字符串 中范围在(0~127，包括0和127)字符的种数。
//
//#include<stdio.h>
//int main()
//{
//	char arr[500] = "";
//	scanf("%s", arr);
//	int arr1[128] = { 0 };
//	for (int i = 0; i < strlen(arr); i++)
//	{
//		arr1[arr[i]] = 1;
//	}
//
//	int num = 0;
//	for (int i = 0; i < 128; i++)
//	{
//		if (arr1[i] == 1)
//		{
//			num++;
//		}
//	}
//
//	printf("%d", num);
//
//	return 0;
//}















//多数元素
//给定一个大小为 n 的数组 nums ，返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n / 2 ⌋ 的元素。
//你可以假设数组是非空的，并且给定的数组总是存在多数元素。
//
//示例 1：
//输入：nums = [3, 2, 3]
//输出：3
//
//示例 2：
//输入：nums = [2, 2, 1, 1, 1, 2, 2]
//输出：2
//提示：
//n == nums.length
//1 <= n <= 5 * 104
//- 109 <= nums[i] <= 109

int majorityElement(int* nums, int numsSize) {
    int count = 0;
    int ret = nums[0];
    for (int i = 0; i < numsSize; i++)
    {
        if (ret == nums[i])
            count++;
        else
        {
            count--;
            if (count == 0)
                ret = nums[i + 1];
        }
    }
    return ret;
}